package com.dferreira.languagesteach.meta_data;

import java.io.Serializable;
import java.util.Date;
import java.util.concurrent.Semaphore;


public class IntroductionState implements Serializable, InteractionUtilities {
    private Integer currentFigure;
    private Boolean paused;
    private Long lastHumanInteractionTimestamp;
    private Long scheduleTimestamp;

    private final Semaphore lookHumanInteraction;

    /**
     * ********************************
     */
    public IntroductionState() {
        super();
        currentFigure = 0;
        paused = false;
        lastHumanInteractionTimestamp = (long) 0;
        scheduleTimestamp = (long) 0;
        lookHumanInteraction = new Semaphore(1);
    }

    /**
     * ********************************
     */
    public Integer getCurrentFigure() {
        return currentFigure;
    }

    /**
     * ********************************
     */
    public void setCurrentFigure(Integer currentFigure) {
        this.currentFigure = currentFigure;
    }

    /**
     * ********************************
     */
    public Boolean getPaused() {
        return paused;
    }

    /**
     * ********************************
     */
    public void setPaused(Boolean paused) {
        this.paused = paused;
    }

    /**
     * ********************************
     */
    public Semaphore getLookHumanInteraction() {
        return lookHumanInteraction;
    }

    /**
     * ********************************
     */
    public Long getLastHumanInteractionTimestamp() {
        return lastHumanInteractionTimestamp;
    }

    /**
     * ********************************
     */
    public void setLastHumanInteractionTimestamp() {
        this.lastHumanInteractionTimestamp = new Date().getTime();
    }

    /**
     * ********************************
     */
    public Long getScheduleTimestamp() {
        return scheduleTimestamp;
    }

    /**
     * ********************************
     */
    public void setScheduleTimestamp() {
        this.scheduleTimestamp = new Date().getTime();
    }

}
